package com.xqq.utils;


import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.xqq.dao.PlaceDAO;
import com.xqq.entity.PlaceDO;
import org.json.JSONArray;
import org.json.JSONObject;

//解析路线经纬度

public class GeoJSONParser {
    public static final int Ac = 6;

    private static final ObjectMapper mapper = new ObjectMapper();

    //    public static void main(String[] args) {
//
//    }
    public static void main(String[] args) {
        try {
            // 读取GeoJSON文件
            String content = new String(Files.readAllBytes(Paths.get("F:\\XW\\项目相关\\缅甸\\线路\\线路\\机场-大使馆-总领馆.geojson")), StandardCharsets.UTF_8);

            // 解析JSON
            JSONObject geoJSON = new JSONObject(content);

            // 获取特征数组
            JSONArray features = geoJSON.getJSONArray("features");

            int pointCount = 0;
            List<String> routeSegments = new ArrayList<>(); // 存储分段点位数据
            StringBuilder currentSegment = new StringBuilder(); // 当前分段
            int maxPointsPerSegment = 2000; // 每段最多100个点位（可调整）

            // 遍历特征
            for (int i = 0; i < features.length(); i++) {
                int count = 0;
                JSONObject feature = features.getJSONObject(i);
                JSONObject geometry = feature.getJSONObject("geometry");
                JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates");

                // 遍历坐标点
                for (int j = 0; j < coordinates.length(); j++) {
                    JSONArray jsonArray = coordinates.getJSONArray(j);
                    String position = ((BigDecimal) jsonArray.get(0)).setScale(Ac, RoundingMode.HALF_UP) + ","
                            + ((BigDecimal) jsonArray.get(1)).setScale(Ac, RoundingMode.HALF_UP);

                    currentSegment.append(position).append(";");
                    pointCount++;
                    count++;

                    // 每 maxPointsPerSegment 个点位拆分成一个段
                    if (count % maxPointsPerSegment == 0) {
                        routeSegments.add(currentSegment.toString());
                        currentSegment = new StringBuilder(); // 重置当前分段
                    }
                }

                // 如果当前分段还有剩余点位，添加到列表
                if (currentSegment.length() > 0) {
                    routeSegments.add(currentSegment.toString());
                    currentSegment = new StringBuilder();
                }

                System.out.println("部分点位：" + count);
            }

            // 输出所有分段点位
            for (String segment : routeSegments) {
                System.out.println(segment);
            }

            System.out.println("一共点位：" + pointCount);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

//    public static void main(String[] args) {
//        try {
//            // 读取GeoJSON文件
//            String content = new String(Files.readAllBytes(Paths.get("F:\\我的星网\\项目相关\\图标加数据1014(1)\\1012标注更新-geojson\\01 北线（弄岛）.geojson")), StandardCharsets.UTF_8);
//
//            // 解析JSON
//            JSONObject geoJSON = new JSONObject(content);
//
//            // 获取特征数组
//            JSONArray features = geoJSON.getJSONArray("features");
//
//
//            int pointCount = 0;
//            // 遍历特征
//            for (int i = 0; i < features.length(); i++) {
//                int count = 0;
//                StringBuilder routeBuilder = new StringBuilder();
//                JSONObject feature = features.getJSONObject(i);
//                JSONObject geometry = feature.getJSONObject("geometry");
//                JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates").get(0);
//                for (int j = 0; j < coordinates.length(); j++) {
//                    JSONArray jsonArray = coordinates.getJSONArray(j);
//                    String position = ((BigDecimal) jsonArray.get(0)).setScale(Ac, RoundingMode.HALF_UP)+","+((BigDecimal) jsonArray.get(1)).setScale(Ac, RoundingMode.HALF_UP);
//                    routeBuilder.append(position).append(";");
//                    pointCount++;
//                    count++;
//                }
//                System.out.println(routeBuilder.toString());
//                System.out.println("部分点位："+count);
//            }
//            System.out.println("一共点位：" + pointCount);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//}

    //    public static void main(String[] args) {
//        try {
//            // 读取GeoJSON文件
//            String content = new String(Files.readAllBytes(Paths.get("F:\\我的星网\\项目相关\\线路\\线路\\01 北线（营地-雷基）.geojson")), StandardCharsets.UTF_8);
//
//            // 解析JSON
//            JSONObject geoJSON = new JSONObject(content);
//
//            // 获取特征数组
//            JSONArray features = geoJSON.getJSONArray("features");
//
//
//            int pointCount = 0;
//            // 遍历特征
//            for (int i = 0; i < features.length(); i++) {
//                int count = 0;
//                StringBuilder routeBuilder = new StringBuilder();
//                if(i==2){
//                    JSONObject feature = features.getJSONObject(i);
//                    JSONObject geometry = feature.getJSONObject("geometry");
//                    JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates");
//                    for (int j = 0; j < coordinates.length(); j++) {
//                        JSONArray jsonArray = coordinates.getJSONArray(j);
//                        String position = ((BigDecimal) jsonArray.get(0)).setScale(Ac, RoundingMode.HALF_UP)+","+((BigDecimal) jsonArray.get(1)).setScale(Ac, RoundingMode.HALF_UP);
//                        routeBuilder.append(position).append(";");
//                        pointCount++;
//                        count++;
//                    }
//                    System.out.println("部分点位："+count);
//                }else {
//                    JSONObject feature = features.getJSONObject(i);
//                    JSONObject geometry = feature.getJSONObject("geometry");
//                    JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates").get(0);
//                    for (int j = 0; j < coordinates.length(); j++) {
//                        JSONArray jsonArray = coordinates.getJSONArray(j);
//                        String position = ((BigDecimal) jsonArray.get(0)).setScale(Ac, RoundingMode.HALF_UP)+","+((BigDecimal) jsonArray.get(1)).setScale(Ac, RoundingMode.HALF_UP);
//                        routeBuilder.append(position).append(";");
//                        pointCount++;
//                        count++;
//                    }
//                    System.out.println("部分点位："+count);
//                }
//                System.out.println(routeBuilder.toString());
//            }
//            System.out.println("一共点位：" + pointCount);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//}
//public static void main(String[] args) {
//    try {
//        // 读取GeoJSON文件
//        String content = new String(Files.readAllBytes(Paths.get("F:\\我的星网\\项目相关\\线路\\线路\\01 北线（营地-雷允）.geojson")), StandardCharsets.UTF_8);
//
//        // 解析JSON
//        JSONObject geoJSON = new JSONObject(content);
//
//        // 获取特征数组
//        JSONArray features = geoJSON.getJSONArray("features");
//
//
//        int pointCount = 0;
//        // 遍历特征
//        for (int i = 0; i < features.length(); i++) {
//            int count = 0;
//            StringBuilder routeBuilder = new StringBuilder();
//            if(i==3){
//                JSONObject feature = features.getJSONObject(i);
//                JSONObject geometry = feature.getJSONObject("geometry");
//                JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates");
//                for (int j = 0; j < coordinates.length(); j++) {
//                    JSONArray jsonArray = coordinates.getJSONArray(j);
//                    String position = ((BigDecimal) jsonArray.get(0)).setScale(Ac, RoundingMode.HALF_UP)+","+((BigDecimal) jsonArray.get(1)).setScale(Ac, RoundingMode.HALF_UP);
//                    routeBuilder.append(position).append(";");
//                    pointCount++;
//                    count++;
//                }
//            }else {
//                JSONObject feature = features.getJSONObject(i);
//                JSONObject geometry = feature.getJSONObject("geometry");
//                JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates").get(0);
//                for (int j = 0; j < coordinates.length(); j++) {
//                    JSONArray jsonArray = coordinates.getJSONArray(j);
//                    String position = ((BigDecimal) jsonArray.get(0)).setScale(Ac, RoundingMode.HALF_UP)+","+((BigDecimal) jsonArray.get(1)).setScale(Ac, RoundingMode.HALF_UP);
//                    routeBuilder.append(position).append(";");
//                    pointCount++;
//                    count++;
//                }
//            }
//            System.out.println("部分点位："+count);
//            System.out.println(routeBuilder.toString());
//        }
//        System.out.println("一共点位：" + pointCount);
//    } catch (Exception e) {
//        e.printStackTrace();
//    }
//}
//}
//public static void main(String[] args) {
//    try {
//        // 读取GeoJSON文件
//        String content = new String(Files.readAllBytes(Paths.get("F:\\我的星网\\项目相关\\线路\\线路\\01 北线（营地-那邦）.geojson")), StandardCharsets.UTF_8);
//
//        // 解析JSON
//        JSONObject geoJSON = new JSONObject(content);
//
//        // 获取特征数组
//        JSONArray features = geoJSON.getJSONArray("features");
//
//        int pointCount = 0;
//        // 遍历特征
//        for (int i = 0; i < features.length(); i++) {
//            StringBuilder routeBuilder = new StringBuilder();
//            int count = 0;
//            if(i==3){
//                JSONObject feature = features.getJSONObject(i);
//                JSONObject geometry = feature.getJSONObject("geometry");
//                JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates");
//                for (int j = 0; j < coordinates.length(); j++) {
//                    JSONArray jsonArray = coordinates.getJSONArray(j);
//                    String position = ((BigDecimal) jsonArray.get(0)).setScale(Ac, RoundingMode.HALF_UP)+","+((BigDecimal) jsonArray.get(1)).setScale(Ac, RoundingMode.HALF_UP);
//                    routeBuilder.append(position).append(";");
//                    pointCount++;
//                    count++;
//                }
//            }else {
//                JSONObject feature = features.getJSONObject(i);
//                JSONObject geometry = feature.getJSONObject("geometry");
//                JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates").get(0);
//                for (int j = 0; j < coordinates.length(); j++) {
//                    JSONArray jsonArray = coordinates.getJSONArray(j);
//                    String position = ((BigDecimal) jsonArray.get(0)).setScale(Ac, RoundingMode.HALF_UP)+","+((BigDecimal) jsonArray.get(1)).setScale(Ac, RoundingMode.HALF_UP);
//                    routeBuilder.append(position).append(";");
//                    pointCount++;
//                    count++;
//                }
//            }
//            System.out.println("部分点位："+count);
//            System.out.println(routeBuilder.toString());
//            System.out.println();
//        }
//        System.out.println("一共点位：" + pointCount);
//    } catch (Exception e) {
//        e.printStackTrace();
//    }
//}
//}
//public static void main(String[] args) {
//    try {
//        // 读取GeoJSON文件
//        String content = new String(Files.readAllBytes(Paths.get("F:\\我的星网\\项目相关\\03 木瓜坝-雷基标注1018\\01 北线（木瓜坝-雷基）.geojson")), StandardCharsets.UTF_8);
//
//        // 解析JSON
//        JSONObject geoJSON = new JSONObject(content);
//
//        // 获取特征数组
//        JSONArray features = geoJSON.getJSONArray("features");
//
//        int pointCount = 0;
//        // 遍历特征
//        for (int i = 0; i < features.length(); i++) {
//            StringBuilder routeBuilder = new StringBuilder();
//            int count = 0;
//            JSONObject feature = features.getJSONObject(i);
//            JSONObject geometry = feature.getJSONObject("geometry");
//            JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates").get(0);
//            for (int j = 0; j < coordinates.length(); j++) {
//                JSONArray jsonArray = coordinates.getJSONArray(j);
//                String position = ((BigDecimal) jsonArray.get(0)).setScale(Ac, RoundingMode.HALF_UP)+","+((BigDecimal) jsonArray.get(1)).setScale(Ac, RoundingMode.HALF_UP);
//                routeBuilder.append(position).append(";");
//                pointCount++;
//                count++;
//            }
//            System.out.println("部分点位："+count);
//            System.out.println(routeBuilder.toString());
//            System.out.println();
//        }
//        System.out.println("一共点位：" + pointCount);
//    } catch (Exception e) {
//        e.printStackTrace();
//    }
//}
//}
//public static void main(String[] args) {
//    try {
//        // 读取GeoJSON文件
//        String content = new String(Files.readAllBytes(Paths.get("F:\\我的星网\\项目相关\\线路\\南线.geojson")), StandardCharsets.UTF_8);
//
//        // 解析JSON
//        JSONObject geoJSON = new JSONObject(content);
//
//        // 获取特征数组
//        JSONArray features = geoJSON.getJSONArray("features");
//
//        int pointCount = 0;
//        // 遍历特征
//        for (int i = 0; i < features.length(); i++) {
//            StringBuilder routeBuilder = new StringBuilder();
//            int count = 0;
//            JSONObject feature = features.getJSONObject(i);
//            JSONObject geometry = feature.getJSONObject("geometry");
//            JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates");
//            System.out.println("第"+i+"条线");
//            for (int j = 0; j < coordinates.length(); j++) {
//                JSONArray jsonArray = coordinates.getJSONArray(j);
//                String position = ((BigDecimal) jsonArray.get(0)).setScale(Ac, RoundingMode.HALF_UP)+","+((BigDecimal) jsonArray.get(1)).setScale(Ac, RoundingMode.HALF_UP);
//                routeBuilder.append(position).append(";");
//                pointCount++;
//                count++;
//            }
//            System.out.println("部分点位："+count);
//            System.out.println(routeBuilder.toString());
//            System.out.println();
//        }
//        System.out.println("一共点位：" + pointCount);
//    } catch (Exception e) {
//        e.printStackTrace();
//    }
//}
//}
//public static void main(String[] args) {
//    try {
//        // 读取GeoJSON文件
//        String content = new String(Files.readAllBytes(Paths.get("F:\\我的星网\\项目相关\\曼德勒标注（2024）\\曼德勒东线（至领事馆）.geojson")), StandardCharsets.UTF_8);
//
//        // 解析JSON
//        JSONObject geoJSON = new JSONObject(content);
//
//        // 获取特征数组
//        JSONArray features = geoJSON.getJSONArray("features");
//
//        int pointCount = 0;
//        // 遍历特征
//        for (int i = 0; i < features.length(); i++) {
//            StringBuilder routeBuilder = new StringBuilder();
//            int count = 0;
//            JSONObject feature = features.getJSONObject(i);
//            JSONObject geometry = feature.getJSONObject("geometry");
//            JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates").get(0);
//            System.out.println("第"+i+"条线");
//            for (int j = 0; j < coordinates.length(); j++) {
//                JSONArray jsonArray = coordinates.getJSONArray(j);
//                String position = ((BigDecimal) jsonArray.get(0)).setScale(Ac, RoundingMode.HALF_UP)+","+((BigDecimal) jsonArray.get(1)).setScale(Ac, RoundingMode.HALF_UP);
//                routeBuilder.append(position).append(";");
//                pointCount++;
//                count++;
//            }
//            System.out.println("部分点位："+count);
//            System.out.println(routeBuilder.toString());
//            System.out.println();
//        }
//        System.out.println("一共点位：" + pointCount);
//    } catch (Exception e) {
//        e.printStackTrace();
//    }
//}
//}
//public static void main(String[] args) {
//    try {
//        // 读取GeoJSON文件
//        String content = new String(Files.readAllBytes(Paths.get("F:\\我的星网\\项目相关\\曼德勒标注（2024）\\曼德勒西线（至领事馆）.geojson")), StandardCharsets.UTF_8);
//
//        // 解析JSON
//        JSONObject geoJSON = new JSONObject(content);
//
//        // 获取特征数组
//        JSONArray features = geoJSON.getJSONArray("features");
//
//        int pointCount = 0;
//        // 遍历特征
//        for (int i = 0; i < features.length(); i++) {
//            StringBuilder routeBuilder = new StringBuilder();
//            int count = 0;
//            JSONObject feature = features.getJSONObject(i);
//            JSONObject geometry = feature.getJSONObject("geometry");
//            JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates").get(0);
//            System.out.println("第"+i+"条线");
//            for (int j = 0; j < coordinates.length(); j++) {
//                JSONArray jsonArray = coordinates.getJSONArray(j);
//                String position = ((BigDecimal) jsonArray.get(0)).setScale(Ac, RoundingMode.HALF_UP)+","+((BigDecimal) jsonArray.get(1)).setScale(Ac, RoundingMode.HALF_UP);
//                routeBuilder.append(position).append(";");
//                pointCount++;
//                count++;
//            }
//            System.out.println("部分点位："+count);
//            System.out.println(routeBuilder.toString());
//            System.out.println();
//        }
//        System.out.println("一共点位：" + pointCount);
//    } catch (Exception e) {
//        e.printStackTrace();
//    }
//}
//}

//    public static void main(String[] args) {
//        try {
//            // 读取GeoJSON文件
//            String content = new String(Files.readAllBytes(Paths.get("F:\\我的星网\\项目相关\\缅甸\\标注数据\\json1204\\01 曼德勒西线（至宾馆）1204.geojson")), StandardCharsets.UTF_8);
//
//            // 解析JSON
//            JSONObject geoJSON = new JSONObject(content);
//
//            // 获取特征数组
//            JSONArray features = geoJSON.getJSONArray("features");
//
//            int pointCount = 0;
//            JSONObject feature = features.getJSONObject(0);
//            JSONObject geometry = feature.getJSONObject("geometry");
//            JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates");
//            for (int j = 0; j < coordinates.length(); j++) {
//                StringBuilder routeBuilder = new StringBuilder();
//                int count = 0;
//                System.out.println("第" + j + "条线");
//                JSONArray routeArray = coordinates.getJSONArray(j);
//                for (int k = 0; k < routeArray.length(); k++) {
//                    JSONArray jsonArray = routeArray.getJSONArray(k);
//                    String position = ((BigDecimal) jsonArray.get(0)).setScale(Ac, RoundingMode.HALF_UP) + "," + ((BigDecimal) jsonArray.get(1)).setScale(Ac, RoundingMode.HALF_UP);
//                    routeBuilder.append(position).append(";");
//                    pointCount++;
//                    count++;
//                }
//                System.out.println("部分点位：" + count);
//                System.out.println(routeBuilder.toString());
//                System.out.println();
//            }
//            System.out.println("一共点位：" + pointCount);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }


//解析灾害数据
//        public static void saveDisaster(DisasterDAO disasterDAO) {
//
//            Map<String, String> hashMap = new HashMap<>();
//            hashMap.put("DR", "干旱");
//            hashMap.put("EQ", "地震");
//            hashMap.put("FL", "洪水");
//            hashMap.put("WF", "森林火灾");
//
//            try {
//                // 读取GeoJSON文件
//                String content = new String(Files.readAllBytes(Paths.get("F:\\我的星网\\项目相关\\result.geojson")), StandardCharsets.UTF_8);
//
//                // 解析JSON
//                JSONObject geoJSON = new JSONObject(content);
//
//                // 获取特征数组
//                JSONArray features = geoJSON.getJSONArray("features");
//
//                int pointCount = 0;
//                List<DisasterDO> disasterDOList = new ArrayList<>();
//                // 遍历特征
//                for (int i = 0; i < features.length(); i++) {
//                    JSONObject feature = features.getJSONObject(i);
//                    DisasterDO disasterDO = new DisasterDO();
////            disasterDO.setEventType();
////            disasterDO.setAlertLevel();
//                    JSONObject geometry = feature.getJSONObject("geometry");
//                    JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates");
//                    String position = Double.parseDouble(String.format("%.6f", coordinates.get(0))) + "," + Double.parseDouble(String.format("%.6f", coordinates.get(1)));
//                    disasterDO.setPosition(position);
//                    JSONObject properties = feature.getJSONObject("properties");
//                    String eventtype = (String) properties.get("eventtype");
//                    disasterDO.setEventType(eventtype);
//                    disasterDO.setEventTypeZh(hashMap.get(eventtype));
//                    String alertlevel = (String) properties.get("alertlevel");
//                    disasterDO.setAlertLevel(alertlevel);
//                    String htmldescription = (String) properties.get("htmldescription");
//                    disasterDO.setDescription(htmldescription);
//                    String fromdate = (String) properties.get("fromdate");
//                    disasterDO.setFromdate(LocalDateTime.parse(fromdate, DateTimeFormatter.ISO_DATE_TIME));
//                    String todate = (String) properties.get("todate");
//                    disasterDO.setTodate(LocalDateTime.parse(todate, DateTimeFormatter.ISO_DATE_TIME));
//                    disasterDOList.add(disasterDO);
//                }
//                disasterDAO.saveBatch(disasterDOList);
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//        }


//    public static void savePlace(PlaceDAO placeDAO) {
//
//        Map<Integer, String> map = new HashMap<>();
//        map.put(1,"23 起始点.geojson");
//        map.put(2,"13 空地避险点.geojson");
//        map.put(3,"03 村镇全部.geojson");
//        map.put(4,"04 路口.geojson");
//        map.put(5,"05 大桥.geojson");
//        map.put(6,"06 沿线桥梁.geojson");
//        map.put(7,"07 加油站.geojson");
//        map.put(8,"08 医院.geojson");
//        map.put(9,"09 警察局.geojson");
//        map.put(10,"10 军事设施.geojson");
//        map.put(11,"11 汇集点.geojson");
//        map.put(12,"12 停车点.geojson");
//        map.put(13,"13 空地.geojson");
//        map.put(14,"14 宝塔.geojson");
//        map.put(15,"15 教堂.geojson");
//        map.put(16,"16 寺庙.geojson");
//        map.put(17,"17 饭馆.geojson");
//        map.put(18,"18 学校.geojson");
//        map.put(19,"19 汽车零配件.geojson");
//        map.put(20,"20 汽车维修.geojson");
//        map.put(21,"21 检查站.geojson");
//        map.put(22,"22 路面难行.geojson");
//        map.put(23,"23 检查点.geojson");
//
//        map.forEach((k,v)->{
//            try {
//                String content = new String(Files.readAllBytes(Paths.get("F:\\我的星网\\项目相关\\缅甸\\jsonpoint\\"+v)), StandardCharsets.UTF_8);
//                int type = k;
//                // 解析JSON
//                JSONObject geoJSON = new JSONObject(content);
//                List<PlaceDO> placeDOList = new ArrayList<>();
//                // 获取特征数组
//                JSONArray features = geoJSON.getJSONArray("features");
//                int pointCount = 0;
//                // 遍历特征
//                for (int i = 0; i < features.length(); i++) {
//                    PlaceDO placeDO = new PlaceDO();
//                    JSONObject feature = features.getJSONObject(i);
//                    JSONObject geometry = feature.getJSONObject("geometry");
//                    JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates");
//                    String position = String.format("%.6f", Double.parseDouble(coordinates.get(0).toString()))+","+String.format("%.6f", Double.parseDouble(coordinates.get(1).toString()));
//                    JSONObject properties = feature.getJSONObject("properties");
//                    String name = properties.getString("Name");
//                    placeDO.setPosition(position);
//                    placeDO.setName(name);
//                    placeDO.setType(type);
//                    placeDOList.add(placeDO);
//                    pointCount++;
//                }
//                placeDAO.saveBatch(placeDOList);
//                System.out.println("一共点位：" + pointCount);
//            } catch (IOException e) {
//                throw new RuntimeException(e);
//            }
//        });
//    }
// 2024-12-02 更新内容
//解析存储地点
//        public static void savePlace(PlaceDAO placeDAO) {
//
//            Map<Integer, String> map = new HashMap<>();
//            map.put(1, "00 起终点（全）1025");
//            map.put(2, "13 避险点（全）1028");//空地避险点
//            map.put(3, "03 村镇（全）1029");
//            map.put(4, "04 路口（全）1111");
//            map.put(5, "05 大桥（全）1028");
//            map.put(6, "06 沿线桥梁（全）1114");
//            map.put(7, "07 加油站（全）1028");
//            map.put(8, "08 医院（全）1028");
//            map.put(9, "09 警察局（全）1025");
//            map.put(10, "10 军事设施（全）1111");
//            map.put(11, "11 汇集点（全）1028");
//            map.put(12, "12 临时停车点（全）1029");//停车点
////    map.put(13,"13 空地.geojson");
////    map.put(14,"14 宝塔.geojson");//没有了
//            map.put(15, "15 教堂（全）1025");
//            map.put(16, "16 寺庙（全）1025");
////    map.put(17,"17 饭馆.geojson");，没有了
//            map.put(18, "18 学校（全）1025");
//            map.put(19, "19 汽车零配件（全）1028");
//            map.put(20, "20 汽车维修（全）1025");
//            map.put(21, "21 检查站（全）1028");
//            map.put(22, "22 路面难行（全）1025");
//            map.put(23, "23 检查点（全）1025");
//
//
//            map.forEach((k, v) -> {
//                try {
//                    String content = new String(Files.readAllBytes(Paths.get("F:\\我的星网\\项目相关\\缅甸\\标注数据\\josn-02 全部标注1114\\" + v + ".geojson")), StandardCharsets.UTF_8);
//                    int type = k;
//                    // 解析JSON
//                    JSONObject geoJSON = new JSONObject(content);
//                    List<PlaceDO> placeDOList = new ArrayList<>();
//                    // 获取特征数组
//                    JSONArray features = geoJSON.getJSONArray("features");
//                    int pointCount = 0;
//                    // 遍历特征
//                    for (int i = 0; i < features.length(); i++) {
//                        PlaceDO placeDO = new PlaceDO();
//                        JSONObject feature = features.getJSONObject(i);
//                        JSONObject geometry = feature.getJSONObject("geometry");
//                        JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates");
//                        String position = String.format("%.6f", Double.parseDouble(coordinates.get(0).toString())) + "," + String.format("%.6f", Double.parseDouble(coordinates.get(1).toString()));
//                        JSONObject properties = feature.getJSONObject("properties");
//                        String name = properties.getString("Name");
//                        placeDO.setPosition(position);
//                        placeDO.setName(name);
//                        placeDO.setType(type);
//                        placeDOList.add(placeDO);
//                        pointCount++;
//                    }
//                    placeDAO.saveBatch(placeDOList);
//                    System.out.println("一共点位：" + pointCount);
//                } catch (IOException e) {
//                    throw new RuntimeException(e);
//                }
//            });
//        }
//}

    // 2024-12-04 更新内容
//解析存储地点
    public static void savePlace(PlaceDAO placeDAO) {

        Map<Integer, String> map = new HashMap<>();
        map.put(1, "00 起终点（全）1204");
        map.put(2, "13 避险点（全）1028");//空地避险点
        map.put(3, "03 村镇（全）1029");
        map.put(4, "04 路口（全）1111");
        map.put(5, "05 大桥（全）1028");
        map.put(6, "06 沿线桥梁（全）1114");
        map.put(7, "07 加油站（全）1028");
        map.put(8, "08 医院（全）1028");
        map.put(9, "09 警察局（全）1025");
        map.put(10, "10 军事设施（全）1111");
        map.put(11, "11 汇集点（全）1028");
        map.put(12, "12 临时停车点（全）1029");//停车点
        map.put(15, "15 教堂（全）1025");
        map.put(16, "16 寺庙（全）1025");
        map.put(18, "18 学校（全）1025");
        map.put(19, "19 汽车零配件（全）1028");
        map.put(20, "20 汽车维修（全）1025");
        map.put(21, "21 检查站（全）1028");
        map.put(22, "22 路面难行（全）1025");
        map.put(23, "23 检查点（全）1025");
        map.put(24, "11 市郊集结点1204");
        AtomicInteger total = new AtomicInteger();
        map.forEach((k, v) -> {
            try {
                String content = new String(Files.readAllBytes(Paths.get("F:\\我的星网\\项目相关\\缅甸\\标注数据\\更新内容汇总1204\\更新内容汇总\\全部\\标注点\\geojson\\" + v + ".geojson")), StandardCharsets.UTF_8);
                int type = k;
                // 解析JSON
                JSONObject geoJSON = new JSONObject(content);
                List<PlaceDO> placeDOList = new ArrayList<>();
                // 获取特征数组
                JSONArray features = geoJSON.getJSONArray("features");
                int pointCount = 0;
                // 遍历特征
                for (int i = 0; i < features.length(); i++) {
                    PlaceDO placeDO = new PlaceDO();
                    JSONObject feature = features.getJSONObject(i);
                    JSONObject geometry = feature.getJSONObject("geometry");
                    JSONArray coordinates = (JSONArray) geometry.getJSONArray("coordinates");
                    String position = String.format("%.6f", Double.parseDouble(coordinates.get(0).toString())) + "," + String.format("%.6f", Double.parseDouble(coordinates.get(1).toString()));
                    JSONObject properties = feature.getJSONObject("properties");
                    String name = properties.getString("name");
                    placeDO.setPosition(position);
                    placeDO.setName(name);
                    placeDO.setType(type);
                    placeDOList.add(placeDO);
                    pointCount++;
                }
                placeDAO.saveBatch(placeDOList);
                System.out.println("点位：" + pointCount);
                total.addAndGet(pointCount);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        });
        System.out.println("共计点位：" + total);
    }
}
